<?php

defined('BASEPATH') or die('forbidden');
/**
 * 拼音转换辅助函数
 * @author  Karson
 * @name    pinyin.php
 * @since   2011-3-26 23:57:35
 */
if (!function_exists('acsii_to_character')) {

    function acsii_to_character($num) {
        $d = array(array("a", - 20319), array("ai", - 20317), array("an", - 20304), array("ang", - 20295), array("ao", - 20292), array("ba", - 20283), array("bai", - 20265), array("ban", - 20257), array("bang", - 20242), array("bao", - 20230), array("bei", - 20051), array("ben", - 20036), array("beng", - 20032), array("bi", - 20026), array("bian", - 20002), array("biao", - 19990), array("bie", - 19986), array("bin", - 19982), array("bing", - 19976), array("bo", - 19805), array("bu", - 19784), array("ca", - 19775), array("cai", - 19774), array("can", - 19763), array("cang", - 19756), array("cao", - 19751), array("ce", - 19746), array("ceng", - 19741), array("cha", - 19739), array("chai", - 19728), array("chan", - 19725), array("chang", - 19715), array("chao", - 19540), array("che", - 19531), array("chen", - 19525), array("cheng", - 19515), array("chi", - 19500), array("chong", - 19484), array("chou", - 19479), array("chu", - 19467), array("chuai", - 19289), array("chuan", - 19288), array("chuang", - 19281), array("chui", - 19275), array("chun", - 19270), array("chuo", - 19263), array("ci", - 19261), array("cong", - 19249), array("cou", - 19243), array("cu", - 19242), array("cuan", - 19238), array("cui", - 19235), array("cun", - 19227), array("cuo", - 19224), array("da", - 19218), array("dai", - 19212), array("dan", - 19038), array("dang", - 19023), array("dao", - 19018), array("de", - 19006), array("deng", - 19003), array("di", - 18996), array("dian", - 18977), array("diao", - 18961), array("die", - 18952), array("ding", - 18783), array("diu", - 18774), array("dong", - 18773), array("dou", - 18763), array("du", - 18756), array("duan", - 18741), array("dui", - 18735), array("dun", - 18731), array("duo", - 18722), array("e", - 18710), array("en", - 18697), array("er", - 18696), array("fa", - 18526), array("fan", - 18518), array("fang", - 18501), array("fei", - 18490), array("fen", - 18478), array("feng", - 18463), array("fo", - 18448), array("fou", - 18447), array("fu", - 18446), array("ga", - 18239), array("gai", - 18237), array("gan", - 18231), array("gang", - 18220), array("gao", - 18211), array("ge", - 18201), array("gei", - 18184), array("gen", - 18183), array("geng", - 18181), array("gong", - 18012), array("gou", - 17997), array("gu", - 17988), array("gua", - 17970), array("guai", - 17964), array("guan", - 17961), array("guang", - 17950), array("gui", - 17947), array("gun", - 17931), array("guo", - 17928), array("ha", - 17922), array("hai", - 17759), array("han", - 17752), array("hang", - 17733), array("hao", - 17730), array("he", - 17721), array("hei", - 17703), array("hen", - 17701), array("heng", - 17697), array("hong", - 17692), array("hou", - 17683), array("hu", - 17676), array("hua", - 17496), array("huai", - 17487), array("huan", - 17482), array("huang", - 17468), array("hui", - 17454), array("hun", - 17433), array("huo", - 17427), array("ji", - 17417), array("jia", - 17202), array("jian", - 17185), array("jiang", - 16983), array("jiao", - 16970), array("jie", - 16942), array("jin", - 16915), array("jing", - 16733), array("jiong", - 16708), array("jiu", - 16706), array("ju", - 16689), array("juan", - 16664), array("jue", - 16657), array("jun", - 16647), array("ka", - 16474), array("kai", - 16470), array("kan", - 16465), array("kang", - 16459), array("kao", - 16452), array("ke", - 16448), array("ken", - 16433), array("keng", - 16429), array("kong", - 16427), array("kou", - 16423), array("ku", - 16419), array("kua", - 16412), array("kuai", - 16407), array("kuan", - 16403), array("kuang", - 16401), array("kui", - 16393), array("kun", - 16220), array("kuo", - 16216), array("la", - 16212), array("lai", - 16205), array("lan", - 16202), array("lang", - 16187), array("lao", - 16180), array("le", - 16171), array("lei", - 16169), array("leng", - 16158), array("li", - 16155), array("lia", - 15959), array("lian", - 15958), array("liang", - 15944), array("liao", - 15933), array("lie", - 15920), array("lin", - 15915), array("ling", - 15903), array("liu", - 15889), array("long", - 15878), array("lou", - 15707), array("lu", - 15701), array("lv", - 15681), array("luan", - 15667), array("lue", - 15661), array("lun", - 15659), array("luo", - 15652), array("ma", - 15640), array("mai", - 15631), array("man", - 15625), array("mang", - 15454), array("mao", - 15448), array("me", - 15436), array("mei", - 15435), array("men", - 15419), array("meng", - 15416), array("mi", - 15408), array("mian", - 15394), array("miao", - 15385), array("mie", - 15377), array("min", - 15375), array("ming", - 15369), array("miu", - 15363), array("mo", - 15362), array("mou", - 15183), array("mu", - 15180), array("na", - 15165), array("nai", - 15158), array("nan", - 15153), array("nang", - 15150), array("nao", - 15149), array("ne", - 15144), array("nei", - 15143), array("nen", - 15141), array("neng", - 15140), array("ni", - 15139), array("nian", - 15128), array("niang", - 15121), array("niao", - 15119), array("nie", - 15117), array("nin", - 15110), array("ning", - 15109), array("niu", - 14941), array("nong", - 14937), array("nu", - 14933), array("nv", - 14930), array("nuan", - 14929), array("nue", - 14928), array("nuo", - 14926), array("o", - 14922), array("ou", - 14921), array("pa", - 14914), array("pai", - 14908), array("pan", - 14902), array("pang", - 14894), array("pao", - 14889), array("pei", - 14882), array("pen", - 14873), array("peng", - 14871), array("pi", - 14857), array("pian", - 14678), array("piao", - 14674), array("pie", - 14670), array("pin", - 14668), array("ping", - 14663), array("po", - 14654), array("pu", - 14645), array("qi", - 14630), array("qia", - 14594), array("qian", - 14429), array("qiang", - 14407), array("qiao", - 14399), array("qie", - 14384), array("qin", - 14379), array("qing", - 14368), array("qiong", - 14355), array("qiu", - 14353), array("qu", - 14345), array("quan", - 14170), array("que", - 14159), array("qun", - 14151), array("ran", - 14149), array("rang", - 14145), array("rao", - 14140), array("re", - 14137), array("ren", - 14135), array("reng", - 14125), array("ri", - 14123), array("rong", - 14122), array("rou", - 14112), array("ru", - 14109), array("ruan", - 14099), array("rui", - 14097), array("run", - 14094), array("ruo", - 14092), array("sa", - 14090), array("sai", - 14087), array("san", - 14083), array("sang", - 13917), array("sao", - 13914), array("se", - 13910), array("sen", - 13907), array("seng", - 13906), array("sha", - 13905), array("shai", - 13896), array("shan", - 13894), array("shang", - 13878), array("shao", - 13870), array("she", - 13859), array("shen", - 13847), array("sheng", - 13831), array("shi", - 13658), array("shou", - 13611), array("shu", - 13601), array("shua", - 13406), array("shuai", - 13404), array("shuan", - 13400), array("shuang", - 13398), array("shui", - 13395), array("shun", - 13391), array("shuo", - 13387), array("si", - 13383), array("song", - 13367), array("sou", - 13359), array("su", - 13356), array("suan", - 13343), array("sui", - 13340), array("sun", - 13329), array("suo", - 13326), array("ta", - 13318), array("tai", - 13147), array("tan", - 13138), array("tang", - 13120), array("tao", - 13107), array("te", - 13096), array("teng", - 13095), array("ti", - 13091), array("tian", - 13076), array("tiao", - 13068), array("tie", - 13063), array("ting", - 13060), array("tong", - 12888), array("tou", - 12875), array("tu", - 12871), array("tuan", - 12860), array("tui", - 12858), array("tun", - 12852), array("tuo", - 12849), array("wa", - 12838), array("wai", - 12831), array("wan", - 12829), array("wang", - 12812), array("wei", - 12802), array("wen", - 12607), array("weng", - 12597), array("wo", - 12594), array("wu", - 12585), array("xi", - 12556), array("xia", - 12359), array("xian", - 12346), array("xiang", - 12320), array("xiao", - 12300), array("xie", - 12120), array("xin", - 12099), array("xing", - 12089), array("xiong", - 12074), array("xiu", - 12067), array("xu", - 12058), array("xuan", - 12039), array("xue", - 11867), array("xun", - 11861), array("ya", - 11847), array("yan", - 11831), array("yang", - 11798), array("yao", - 11781), array("ye", - 11604), array("yi", - 11589), array("yin", - 11536), array("ying", - 11358), array("yo", - 11340), array("yong", - 11339), array("you", - 11324), array("yu", - 11303), array("yuan", - 11097), array("yue", - 11077), array("yun", - 11067), array("za", - 11055), array("zai", - 11052), array("zan", - 11045), array("zang", - 11041), array("zao", - 11038), array("ze", - 11024), array("zei", - 11020), array("zen", - 11019), array("zeng", - 11018), array("zha", - 11014), array("zhai", - 10838), array("zhan", - 10832), array("zhang", - 10815), array("zhao", - 10800), array("zhe", - 10790), array("zhen", - 10780), array("zheng", - 10764), array("zhi", - 10587), array("zhong", - 10544), array("zhou", - 10533), array("zhu", - 10519), array("zhua", - 10331), array("zhuai", - 10329), array("zhuan", - 10328), array("zhuang", - 10322), array("zhui", - 10315), array("zhun", - 10309), array("zhuo", - 10307), array("zi", - 10296), array("zong", - 10281), array("zou", - 10274), array("zu", - 10270), array("zuan", - 10262), array("zui", - 10260), array("zun", - 10256), array("zuo", - 10254));
        if ($num > 0 && $num < 160) {
            return chr($num);
        } elseif ($num < - 20319 || $num > - 10247) {
            return '';
        } else {
            for ($i = count($d) - 1; $i >= 0; $i--) {
                if ($d[$i][1] <= $num)
                    break;
            }
            return $d[$i][0];
        }
    }

}

if (!function_exists('pinyin')) {

    /**
     * 中文转拼音
     * @param string $str 需要转换的中文
     * @param bool $onlyfirst 默认为false，是否只截取拼音的首字母
     * @param string $delimiter 默认为''，字母间的分隔符
     * @return string
     */
    function pinyin($var, $onlyfirst = false, $delimiter = '-') {
        $pinyin = '';
        $str = iconv('UTF-8', 'GBK', $var);
        for ($i = 0; $i < strlen($str); $i++) {
            $p = ord(substr($str, $i, 1));
            if ($p > 160) {
                $q = ord(substr($str, ++$i, 1));
                $p = $p * 256 + $q - 65536;
            }
            $result = acsii_to_character($p);
            $pinyin .= $onlyfirst ? substr($result, 0, 1) : $result;
            $pinyin .= $delimiter;
        }
        $pinyin = trim($pinyin, $delimiter);
        return $pinyin;
    }

}